\section{代码示例}

\subsection{代码片段}
这里有几行C程序代码, 虽然没加方框，但是添加了行号。
\begin{lstlisting}[language=C]
	typedef double (*Ptr2Fun)(double); /*创建新数据类型: 函数指针*/
	Ptr2Fun f; /* 声明函数指针类型的变量  */
	f = cos;   /* 给变量赋值 */
	Ptr2Fun g = sin; /* 定义函数指针型变量, 存在内存分配的动作 */
	const double pi = acos(-1.0); /*  定义常数 pi = 3.1415926... */
	double value_1 = g(pi/2); /* value_1 = sin(pi/2) = 1.0  */
	double value_2 = g(pi/4); /* value_2 = sin(pi/4) = 0.707 ... */
\end{lstlisting}

\subsection{完整的小程序}
采用``分割---近似---求和"的方法计算定积分的数值
$$
\int^b_a f(x) \mathrm{d} x \approx \sum^{n-1}_{i=0} f(x_i)\Delta x, \quad x_i = a+i\cdot \Delta x, \quad \Delta x = \frac{b-a}{n}
$$
\begin{lstlisting}[language=C,frame=shadowbox,title={Integral-1.c}]
	double Integral(Ptr2Fun f, double a, double b, unsigned n)
	{
		double sum = 0.0, delta_x = (b-a)/n;
		double x_i = 0.0;
		for(int i = 0; i < n; i++){
			x_i = a + i*delta_x;
			sum += f(x_i)*delta_x;
		}
		return sum; 				
	}
\end{lstlisting}

\subsection{使用{\LaTeX{}}命令给代码写注释}

\begin{lstlisting}[language=C,frame=shadowbox,title={Integral-2.c}]
    /* 计算定积分 (*@$\displaystyle \int^b_a f(x)\mathrm{d} x = F(b) - F(a)\approx \sum^{n-1}_{i=0} f(x_i)\Delta x_i $@*) */
	double Integral(Ptr2Fun f, double a, double b, unsigned n)
	{
		double sum = 0.0, delta_x = (b-a)/n; 
		double x_i = 0.0;
		for(int i = 0; i < n; i++){
			x_i = a + i*delta_x;   /* (*@$ x_i = a + i\cdot \Delta x $@*) */
			sum += f(x_i)*delta_x; /* (*@$ S \leftarrow S + f(x_i)\cdot \Delta x $@*) */
		}
		return sum; 				
	}
\end{lstlisting}


\subsection{算法与伪代码示例}

算法~\ref{alg-1}~对于xxx来说是关键，其显著的特点是xxx, 

\begin{algorithm}[h]
	\caption{如何使用while和if} \label{alg-1}
	\begin{algorithmic}[1]  %每行显示行号
		\Require 这段代码
		\Ensure 使用while和if的方法
		\Function{函数名}{参数列表}
		\While{True}
		\If{临界条件}
		\State 退出循环
		\EndIf
		\State 某个变量  $\gets$ 某个变量
		\EndWhile
		\State\Return 某个返回值
		\EndFunction
	\end{algorithmic}
\end{algorithm}

算法~\ref{alg-2}~对于xxx来说是关键，其显著的特点是xxx, 

\begin{breakablealgorithm}
	\caption{如何使用for和do-while} \label{alg-2}
	\begin{algorithmic}[1]  %每行显示行号
		\Require 这段代码
		\Ensure 使用for和do-while的方法
		\Function{函数名}{参数列表}
		\Repeat
		\State 学习\LaTeX
		\Until{Alive}
		\For{$ i = 1, 2, ..., 7 $}
		\State echo "今天是周\$i\ "
		\EndFor
		\EndFunction
	\end{algorithmic}
\end{breakablealgorithm}
